package regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author DCSGO
 * @version 1.0
 * 字符匹配符
 */
public class Regexp02 {
    public static void printFind(String content, String regStr) {
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.print(matcher.group(0) + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        //abc 匹配abc
        printFind("abc1c23dEF45ABC6Ghi7j9", "abc");//abc
        //(?i)abc 匹配abc忽略大小写
        printFind("abc1c23dEF45ABC6Ghi7j9", "(?i)abc");//abc ABC
        //a(?i)bc 匹配abc 其中 bc 忽略大小写
        printFind("abc aBC ABC abC AbC aBc", "a(?i)bc");//abc aBC abC aBc
        //a((?i)b)c 匹配abc 其中 b 忽略大小写
        printFind("abc aBC ABC abC AbC aBc", "a((?i)b)c");//abc aBc
        //也可以通过以下方式实现忽略大小写
        Pattern pattern = Pattern.compile("abc", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher("abc aBC ABC abC AbC aBc");
        while (matcher.find()) {
            System.out.print(matcher.group(0) + " ");
        }//abc aBC ABC abC AbC aBc
        System.out.println();

        //[] 可进行匹配的字符列表
        //[abc] 匹配abc中的一个字符
        printFind("abc1c23dEF45ABC6Ghi7j9", "[abc]");//a b c c
        //[a-z] 匹配26个小写字母中的一个
        printFind("abc1c23dEF45ABC6Ghi7j9", "[a-z]");//a b c c d h i j
        //[A-Z] 匹配26个大写字母中的一个
        printFind("abc1c23dEF45ABC6Ghi7j9", "[A-Z]");//E F A B C G
        //[0-9] 匹配0至9的数字中的一个
        printFind("abc1c23dEF45ABC6Ghi7j9", "[0-9]");//1 2 3 4 5 6 7 9

        System.out.println("---------------------------------------");
        //[^] 不可进行匹配的字符列表
        //[^abc] 匹配不包含abc中的任意一个字符
        printFind("abc1c23dEF45ABC6Ghi7j9", "[^abc]");
        //1 2 3 d E F 4 5 A B C 6 G h i 7 j 9
        //[^a-z] 匹配不包含26个小写字母中的任意一个字符
        printFind("abc1c23dEF45ABC6Ghi7j9", "[^a-z]");
        //1 2 3 E F 4 5 A B C 6 G 7 9
        //[^A-Z] 匹配不包含26个大写字母中的任意一个字符
        printFind("abc1c23dEF45ABC6Ghi7j9", "[^A-Z]");
        //a b c 1 c 2 3 d 4 5 6 h i 7 j 9
        //[^0-9] 匹配不包含0至9的数字中的任意一个字符
        printFind("abc1c23dEF45ABC6Ghi7j9", "[^0-9]");
        //a b c c d E F A B C G h i j

    }
}
